/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package banco_imobiliario.dao;

import banco_imobiliario.model.Noticia;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author alessandro
 */
public class NoticiaDAOImpl implements NoticiaDAO{

    
    private Connection conexaoBanco = null;
    private PreparedStatement preparedStatement = null;
    private ResultSet resultadoConsulta = null;

    @Override
    public void insertCarta(Noticia carta) {

        String sqlQuery = "INSERT INTO carta (titulo, texto, valor) VALUES (?,?,?)"; 
		
        try {
            
            conexaoBanco = DAOConection.getConnection();
            preparedStatement = conexaoBanco.prepareStatement(sqlQuery);

            preparedStatement.setString(1, carta.getTitulo());
            preparedStatement.setString(2, carta.getTexto());
            preparedStatement.setDouble(3, carta.getValor());

            preparedStatement.execute();

            preparedStatement.close();
            conexaoBanco.close();

        } catch (SQLException e) {
                System.out.println("Erro ao inserir nova carta: " + e);
        }
        
    }

    @Override
    public void updateCarta(Noticia carta) {

        String sqlQuery = "UPDATE carta SET titulo = ?, texto = ?, valor = ? " +
                                          "WHERE id = ?"; 

        try {

            conexaoBanco = DAOConection.getConnection();
            preparedStatement = conexaoBanco.prepareStatement(sqlQuery);

            preparedStatement.setString(1, carta.getTitulo());
            preparedStatement.setString(2, carta.getTexto());
            preparedStatement.setDouble(3, carta.getValor());
            preparedStatement.setInt(4, carta.getId());

            preparedStatement.executeUpdate();

            preparedStatement.close();
            conexaoBanco.close();

        } catch (SQLException e) {
                System.out.println("Erro ao atualizar carta: " + e);
        }
        
    }

    @Override
    public void deletarCarta(int id) {
        
        String sqlQuery = "DELETE FROM carta WHERE id = ?"; 

        try {

            conexaoBanco = DAOConection.getConnection();
            preparedStatement = conexaoBanco.prepareStatement(sqlQuery);

            preparedStatement.setInt(1, id);

            preparedStatement.execute();

            preparedStatement.close();
            conexaoBanco.close();

        } catch (SQLException e) {
                System.out.println("Erro ao deletar carta: " + e);
        }

    }

    @Override
    public ArrayList<Noticia> getAllCartas() {
    
        int id;
        double valor;
        String titulo, texto;
        Noticia carta;
        ArrayList<Noticia> cartas = new ArrayList<Noticia>();
        
        String sqlQuery = "SELECT id, titulo, texto, valor FROM carta";


        try {

            conexaoBanco = DAOConection.getConnection();
            preparedStatement = conexaoBanco.prepareStatement(sqlQuery);

            resultadoConsulta = preparedStatement.executeQuery();

            while(resultadoConsulta.next()){

                carta = new Noticia();

                id = Integer.valueOf(resultadoConsulta.getString("id"));
                titulo = resultadoConsulta.getString("titulo");
                texto = resultadoConsulta.getString("texto");
                valor = Double.valueOf(resultadoConsulta.getString("valor"));

                carta.setId(id);
                carta.setTitulo(titulo);
                carta.setTexto(texto);
                carta.setValor(valor);

                cartas.add(carta);

            }

            preparedStatement.close();
            conexaoBanco.close();


        } catch (SQLException e) {
                System.out.println("Erro ao realizar o select em carta: " + e);
        }


        return cartas;
        
    }
            
    
    
}




















